#ifndef _GRAPH_H_
#define _GRAPH_H_
#include <vector>
#include "types.h"
#include "node.h"

typedef std::pair<NodeIndex, NodeIndex> Edge;
typedef std::vector<Edge> EdgeList;
class Map;

class Graph
{
public:
  Graph(void);
  ~Graph(void);

  void addNode(const NodeIndex& index);
  //void addNodes(const NodeList& nodes);
  void removeNode(Node* node);
  void calculateEdges(const Map& map);
  void clearNodes(void);

  Node* operator [] (const NodeIndex& index);
  const NodeMap& getNodes(void) const;
  //NodeMapItr getIterator(void);

private:
  NodeMap mNodes;
};

#endif // _GRAPH_H_
